summaryrefslogtreecommitdiffstats
path: root/glucometerutils/common.py
diff options
context:
space:
mode:
Diffstat (limited to 'glucometerutils/common.py')
-rw-r--r--glucometerutils/common.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/glucometerutils/common.py b/glucometerutils/common.py
new file mode 100644
index 0000000..e9e3cda
--- /dev/null
+++ b/glucometerutils/common.py
@@ -0,0 +1,48 @@
+"""Common routines for data in glucometers."""
+
+__author__ = 'Diego Elio Pettenò'
+__email__ = 'flameeyes@flameeyes.eu'
+__copyright__ = 'Copyright © 2013, Diego Elio Pettenò'
+__license__ = 'GPL v3 or later'
+
+# Constants for units
+UNIT_MGDL = 'mg/dL'
+UNIT_MMOLL = 'mmol/L'
+
+VALID_UNITS = [UNIT_MGDL, UNIT_MMOLL]
+
+# Constants for date format
+DATETIME_12HR = '12 hours'
+DATETIME_24HR = '24 hours'
+
+from glucometerutils import exceptions
+
+
+def ConvertGlucoseUnit(value, from_unit, to_unit=None):
+ """Convert the given value of glucose level between units.
+
+ Args:
+ value: The value of glucose in the current unit
+ from_unit: The unit value is currently expressed in
+ to_unit: The unit to conver the value to: the other if empty.
+
+ Returns:
+ The converted representation of the blood glucose level.
+
+ Raises:
+ exceptions.InvalidGlucoseUnit: If the parameters are incorrect.
+ """
+ if from_unit not in VALID_UNITS:
+ raise exceptions.InvalidGlucoseUnit(from_unit)
+
+ if from_unit == to_unit:
+ return value
+
+ if to_unit is not None:
+ if to_unit not in VALID_UNITS:
+ raise exceptions.InvalidGlucoseUnit(to_unit)
+
+ if from_unit is UNIT_MGDL:
+ return round(value / 18.0, 2)
+ else:
+ return round(value * 18.0, 0)